/**
 * 买卖股票的最好时机(一)
 *
 * 描述
 * 假设你有一个数组prices，长度为n，其中prices[i]是股票在第i天的价格，请根据这个价格数组，返回买卖股票能获得的最大收益
 * 1.你可以买入一次股票和卖出一次股票，并非每天都可以买入或卖出一次，总共只能买入和卖出一次，且买入必须在卖出的前面的某一天
 * 2.如果不能获取到任何利润，请返回0
 * 3.假设买入卖出均无手续费
 *
 * 数据范围：
 * 0≤n≤10^5 ,0≤val≤10^4
 *
 * 输入描述：
 * 第一行输入一个正整数 n 表示数组的长度
 * 第二行输入 n 个正整数，表示股票在第 i 天的价格
 *
 * 输出描述：
 * 输出只买卖一次的最高收益
 */

import java.util.Scanner;

/**
 * 这里我们只要记录前面最小的, 然后再用现在的减最小的
 * 这样就可以知道最大的利润
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(1)
 */

public class Main {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        // 记录最小的买票价格
        int min = Integer.MAX_VALUE;

        // 结果
        int res = 0;
        for (int i = 0; i < n; i++) {

            int x = in.nextInt();

            // 更新最小价格
            min = Math.min(min, x);

            // 更新最大利润
            res = Math.max(res, x - min);
        }

        System.out.println(res);
    }
}